
package com.infore.common.utils;


import java.util.regex.Pattern;

/**
 * 功能说明：区划代码工具类
 * 
  * @ClassName: QhdmUtils
  * @author luo bin
  * @date 2017年6月30日 下午3:35:54
  * @最后修改人 luo bin
  * @最后修改时间 2017年6月30日 下午3:35:54
 */
public class QhdmUtils {
	/**
	 * 功能说明：根据传入的区划代码获取所属行政区划的省级代码
	 * 
	  * @Title: getProvince
	  * @author: luo bin
	  * @date 2017年6月30日 下午3:37:08
	  * @最后修改人: luo bin
	  * @最后修改时间：2017年6月30日 下午3:37:08
	  * @param qhdm
	  * @return
	  * @throws
	 */
	public static String getProvince(String qhdm){
		if(StringUtils.isNotEmpty(qhdm)){
			return qhdm.substring(0, 2)+"0000";
		}
		return null;
	}
	
	/**
	 * 功能说明：获取所属行政区划市级区划代码
	 * 
	  * @Title: getCity
	  * @author: luo bin
	  * @date 2017年6月30日 下午3:39:32
	  * @最后修改人: luo bin
	  * @最后修改时间：2017年6月30日 下午3:39:32
	  * @param qhdm
	  * @return
	  * @throws
	 */
	public static String getCity(String qhdm){
		if(StringUtils.isNotEmpty(qhdm)){
			return qhdm.substring(0, 4)+"00";
		}
		return null;
	}
	
	/**
	 * 功能说明：判断区划等级  1：省级，2：市级，3：区县级
	 * 
	  * @Title: isQhdj
	  * @author: luo bin
	  * @date 2017年6月30日 下午3:55:11
	  * @最后修改人: luo bin
	  * @最后修改时间：2017年6月30日 下午3:55:11
	  * @param qhdm
	  * @return
	  * @throws
	 */
	public static int isQhdj(String qhdm){
		if(null==qhdm){
			return 0;
		}
		/**
		 * 区划正则表达式
		 */
		String patternQhdm = "[0-9]{6}";
		/**
		 * 省级区划正则表达式
		 */
		String patternProvince="[0-9]{2}[0]{4}";
		/**
		 * 市级区划正则表达式
		 */
		String patternCity="[0-9]{4}[0]{2}";
		int i=0;
	    if(Pattern.matches(patternQhdm, qhdm)){
	    	i=3;
	    	if(Pattern.matches(patternProvince, qhdm)&&!qhdm.substring(0, 2).equals("00")){
	    		i=1;
	    	}else if(Pattern.matches(patternCity, qhdm)&&!qhdm.substring(0, 4).equals("0000")){
	    		i=2;
	    	}
	    }
		return i;
	}

	public static String getQhColumn(String areaCode){
		int qhdj = QhdmUtils.isQhdj(areaCode);
		String qhColumn = null;
		switch(qhdj){
			case 1:
				qhColumn = "SJDM";
				break;
			case 2:
				qhColumn = "SZDM";
				break;
			case 3:
				qhColumn = "QXDM";
				break;
			default:
				qhColumn = null;
				break;
		}
		return qhColumn;
	}
}

